有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带Jetty的java多个webroot文件夹

我正在使用Jetty(版本6.1.22)为Java web应用程序提供服务。我想让Jetty在两个不同的文件夹中查找web资源。以这种布局为例:

+- project1
|   +- src
|       +- main
|           +- webapp
|               +- first.jsp
|
+- project2
    +- src
        +- main
            +- webapp
                +- second.jsp

我想让Jetty同时提供两个URL:

  • http://localhost/web/first.jsp
  • http://localhost/web/second.jsp

我试着这样启动Jetty:

Server server = new Server();
SocketConnector connector = new SocketConnector();
connector.setPort(80);
server.setConnectors(new Connector[] { connector });

WebAppContext contextWeb1 = new WebAppContext();
contextWeb1.setContextPath("/web");
contextWeb1.setWar("project1/src/main/webapp");
server.addHandler(contextWeb1);

WebAppContext contextWeb2 = new WebAppContext();
contextWeb2.setContextPath("/web");
contextWeb2.setWar("project2/src/main/webapp");
server.addHandler(contextWeb2);

server.start();

但是它只为first.jsp服务,并为second.jsp返回404

我怎样才能让它工作?我还希望保持在相同的上下文中(即相同的类加载器、相同的会话管理器等)


共 (2) 个答案

  1. # 1 楼答案

    我相信您必须编写自己的WebAppContext子类来完成您想做的事情

    使用该上下文部署web应用程序的最简单方法是在上下文中使用XML文件进行部署

  2. # 2 楼答案

    自6.1.12以来,通过对WebAppContext的基本资源使用ResourceCollection来支持这一点:

    Server server = new Server(80);
    WebAppContext context = new WebAppContext();
    context.setContextPath("/");
    ResourceCollection resources = new ResourceCollection(new String[] {
        "project1/src/main/webapp", 
        "project2/src/main/webapp", 
    });
    context.setBaseResource(resources);
    server.setHandler(context);
    server.start();
    

    更多信息:http://docs.codehaus.org/display/JETTY/Multiple+WebApp+Source+Directory